package main

import "fmt"

// 假设 planets 是一个数组，那么 planets[0:4] 就是一个切片，它切分出了数组里前 4 个元素。
// 切分数组不会导致数组被修改，它只是创建了指向数组的一个窗口或视图，这种视图就是 slice 类型。

func main() {
	planets := [...]string{
		"Mercury",
		"Venus",
		"Earth",
		"Mars",
		"Jupiter",
		"Saturn",
		"Uranus",
		"Neptune",
	}

	terrestrial := planets[0:4]
	// fmt.Println("terrestrial=", terrestrial)
	// fmt.Println("planets=", planets)

	// terrestrial[0] = "111"
	// fmt.Println("terrestrial=", terrestrial)
	// fmt.Println("planets=", planets)

	gasGiants := planets[4:6]
	iceGiants := planets[6:8]

	fmt.Println(terrestrial)
	fmt.Println(gasGiants)
	fmt.Println(iceGiants)

	fmt.Println(gasGiants[0])
	fmt.Println("==================")

	giants := planets[4:8]
	fmt.Println(giants)

	gas := giants[0:2]
	fmt.Println(gas)

	ice := giants[2:4]
	fmt.Println(ice)
	fmt.Println("==================")

	iceGiantsMarkII := iceGiants
	iceGiants[1] = "Poseidon"
	fmt.Println(planets)
	fmt.Println(iceGiants)
	fmt.Println(iceGiantsMarkII)
}
